Enterprise business software companies are increasingly altering the architecture of their software products in order to provide greater flexibility for corporations or other users of their systems. Conventional business software may include a layered architecture design, for example, a three-layer architecture which may include a database layer, application server layer and user interface layer. However, more recent business software may be designed based on a Service Oriented Architecture (SOA).
There are a number of differences between a layered architecture and a SOA. For example, a layered architecture may be constructed using server silos wherein a single software layer such as a database may be maintained on a single hardware resource or a cluster of resources. Tight coupling of entire software layers to hardware resources may thus be a characteristic of example layered architectures.
In contrast, an SOA may provide system functionality distributed over many software services that each provide their own programming interface for inter-communication with other services. Since software services encapsulate functionality at a much greater level of granularity they may provide looser-coupling and higher flexibility than a layered architecture. Such a system may be generated based on an orchestration of all services combined into workflows. Services in themselves may be layered but this may be considered unimportant to the overall system as only the service interface may be exposed to the system.
Characteristics that may determine hardware resource provisioning on a system based on SOA may be much more complex than that of a typical layered architecture because of the higher numbers and granularity of services in the SOA approach. However, resource provisioning for a SOA may be equally as important as resource provisioning for a layered architecture. Thus, it may be desirable to provide techniques which may improve estimates for resource provisioning of architectures such as service oriented architectures.